home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-10-09 | 1.8 KB | 80 lines | [TEXT/MEDT] |
- MODULE GraphicExample; (* draws Sierpinski curves in a graphic window. *)
-
- FROM GraphicWindows IMPORT Window, OpenGraphicWindow, CloseGraphicWindow, Clear,
- SetPen, TurnTo, Move;
- IMPORT TextWindows;
-
- VAR i,x,y : INTEGER;
- w : Window;
- v : TextWindows.Window;
- Length : ARRAY [1..5] OF INTEGER;
-
- PROCEDURE Line (Dir, Len : INTEGER);
- BEGIN
- TurnTo(w,Dir*45);
- Move(w,Len*Length[i])
- END Line;
-
- PROCEDURE B (Level : INTEGER); FORWARD;
- PROCEDURE C (Level : INTEGER); FORWARD;
- PROCEDURE D (Level : INTEGER); FORWARD;
-
- PROCEDURE A (Level : INTEGER);
- BEGIN
- IF (Level > 0) THEN
- A(Level-1); Line(7,1); B(Level-1); Line(0,2);
- D(Level-1); Line(1,1); A(Level-1)
- END (* IF *)
- END A;
-
- PROCEDURE B (Level : INTEGER);
- BEGIN
- IF (Level > 0) THEN
- B(Level-1); Line(5,1); C(Level-1); Line(6,2);
- A(Level-1); Line(7,1); B(Level-1)
- END (* IF *)
- END B;
-
- PROCEDURE C (Level : INTEGER);
- BEGIN
- IF (Level > 0) THEN
- C(Level-1); Line(3,1); D(Level-1); Line(4,2);
- B(Level-1); Line(5,1); C(Level-1)
- END (* IF *)
- END C;
-
- PROCEDURE D (Level : INTEGER);
- BEGIN
- IF (Level > 0) THEN
- D(Level-1); Line(1,1); A(Level-1); Line(2,2);
- C(Level-1); Line(3,1); D(Level-1)
- END (* IF *)
- END D;
-
-
- BEGIN (* GraphicExample *)
- OpenGraphicWindow(w,5,5,502,315,"Sierpinski curve",Clear);
- x := 123; y := 256;
- Length[1] := 32;
- FOR i:=2 TO 5 DO
- Length[i] := Length[i-1] DIV 2
- END (* FOR *);
- LOOP
- TextWindows.OpenTextWindow(v,312,0,200,100,"Text");
- TextWindows.WriteString(v,"Level (0 to quit) : ");
- TextWindows.ReadInt(v,i);
- TextWindows.CloseTextWindow(v);
- Clear(w);
- IF (i <= 0) OR (i > 5) THEN
- EXIT
- END (* IF *);
- SetPen(w,x,y);
- A(i); Line(7,1);
- B(i); Line(5,1);
- C(i); Line(3,1);
- D(i); Line(1,1);
- END (* LOOP *);
- CloseGraphicWindow(w)
- END GraphicExample.
-
-